/**
 * @file BaseApp.h
 * @author Lost
 * @date 六月 2018
 * @brief 
 * 应用基类
 */
#ifndef __BASEAPP_H__
#define __BASEAPP_H__

#include <google/protobuf/message.h>

#include "packet.pb.h"


#ifdef _WIN32
#include <hash_map>
using namespace stdext;
#else
#include <ext/hash_map>
using namespace __gnu_cxx;
#endif



typedef hash_map<int, google::protobuf::Message*> CmdRouteMap;

/**
 * @brief 应用基类
 */ 
class CBaseApp 
{
public:
    CBaseApp();
    ~CBaseApp();
public:
    /**
     * @brief 初始化
     */
    virtual bool Init();

    /**
     * @brief 处理报文
     */
    virtual int HandleMessage(const comm::Head &pbHead, const google::protobuf::Message &pbMessage);
public:
    /**
     * @brief 获取注册信息
     */
    inline CmdRouteMap &GetCmdRounteMap() { return m_mapCmdRoute; }

    /**
     * @brief 注册消息
     */
    int RmgCmd(int iCmd, google::protobuf::Message* pMessage);

private:
    /*!< 消息路由表 */
    CmdRouteMap m_mapCmdRoute;
};


#endif // __BASEAPP_H__